#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""DocString
Exporta una variable llamada logging que nos permite crear logs de manera sencilla
Los logs se podrean crear en consola, en un archivo en los dos a la vez.
Para activarlos se pondrá a True las variables LOG_CONSOLE y LOG_ARCHIVO según
queramos.
Los niveles de depuración son:
    CRITICAL    50
    ERROR       40
    WARNING     30
    INFO        20
    DEBUG       10
    NOTSET

Para poder utilizarlo en los archivos hay importar todo el contenido:
from modLog import *

Recomendación:
En cada archivo hacer:

loggerNombreArchivo = logging.getLogger('myapp.NombreArchivo')

y utilizar loggerNombreArchivo para generar el log
Ejemplo:

-- Esto es un log en el root
logging.info('Jackdaws love my big sphinx of quartz.')

# Now, define a couple of other loggers which might represent areas in your
# application:

logger1 = logging.getLogger(MYAPP+'.area1')
logger1.debug('Hola caracola')
DocString Paragraph

"""
import logging
#Nombre corto aplicación
MYAPP = 'gestCorreo'
ARCHIVO_LOG = MYAPP+'.log'
PATH_LOG = ''
LOG_CONSOLE = False 
LOG_ARCHIVO = True

class ColorFormatter(logging.Formatter):
 
    def color(self, level=None):
        codes = {\
            None:       (0,   0),
            'DEBUG':    (0,   2), # gris
            'INFO':     (0,   0), # normal
            'WARNING':  (1,  34), # azul
            'ERROR':    (1,  31), # rojo
            'CRITICAL': (1, 101), # negro, fondo rojo
            }
        return (chr(27)+'[%d;%dm') % codes[level]
 
    def format(self, record):
        retval = logging.Formatter.format(self, record)
        return self.color(record.levelname) + retval + self.color()


if LOG_ARCHIVO:
#    print 'Si quiero log por cosola'
#   set up logging to file
    logging.basicConfig(level = logging.DEBUG,
        format = '%(asctime)s %(name)-18s %(levelname)-10s %(message)s',
        datefmt = '%Y-%m-%d %H:%M:%S',
        filename = PATH_LOG+ARCHIVO_LOG,
        filemode = 'aw')

if LOG_CONSOLE:
    # print 'Si quiero log en archivo'
    # Definición de log por consola                    
    # define a Handler which writes INFO messages or higher to the sys.stderr
    console = logging.StreamHandler()
    #Nivel de depuración por consola
    console.setLevel(logging.DEBUG)
    # set a format which is simpler for console use
    FORMATE_CONSOLE='%(name)-15s: %(levelname)-10s %(message)s'
    # tell the handler to use this format
    console.setFormatter(ColorFormatter(FORMATE_CONSOLE))
    # add the handler to the root logger
    logging.getLogger('').addHandler(console)

__version__ = "$Revision$"
# $Source$

